package com.dyz.leetcode._09_heapAndPriorityQueue;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;

public class _703_KthLargest {
//    private List<Integer> data;
//    private int k;

//    public _703_KthLargest(int k, int[] nums) {
//        this.k = k;
//        this.data = new ArrayList<>();
//        for(int num:nums){data.add(num);}
//
//    }
//
//    public int add(int val) {
//        data.add(val);
//        Collections.sort(data);
//        return data.get(data.size()-k);
//
//    }

    private PriorityQueue<Integer> data;
    private int k;

    public _703_KthLargest(int k, int[] nums) {
        data = new PriorityQueue<>(k);
        this.k = k;
        for (int num: nums) {
            if(data.size()<k){
                data.add(num);
            }else if(num>data.peek()){
                data.remove();
                data.add(num);
            }

        }
    }

    public int add(int val) {
        if(data.size()<k){
            data.add(val);
        }else if(val>data.peek()){
            data.remove();
            data.add(val);
        }
        return data.peek();

    }
}
